package modele;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.text.Collator;
import java.util.Comparator;
import java.util.List;

public class ComparatorDossierParcours implements Comparator<Dossier>, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2L;
	Collator myCollator = Collator.getInstance();
	public int compare(Dossier o1, Dossier o2){
		try {
			String s1="",s2="";
			// comparer d'abord par premier voeu puis par nom pour grouper les fiches par specialite a l'impression: plus pratique
			Demande d1=o1.getDemande();
			if (d1!=null) {
				List<Fiche> l1=d1.getFiches();
				if (l1.size()>0)
					s1=((Fiche)(l1.iterator().next())).getParcours().getSigle();
			}
			Demande d2=o2.getDemande();
			if (d2!=null) {
				List<Fiche> l2=d2.getFiches();
				if (l2.size()>0)
					s2=((Fiche)(l2.iterator().next())).getParcours().getSigle();
			}

			int res = s1.compareTo(s2);
			if (res ==0)
				res = (o1.getEtudiant().getNom()).compareTo(o2.getEtudiant().getNom());
			if (res ==0)
				res = (o1.getEtudiant().getPrenom()).compareTo(o2.getEtudiant().getPrenom());
			if (res ==0)
				res = (o1.getEtudiant().getIdApoflux()).compareTo(o2.getEtudiant().getIdApoflux());
			return res;
		}
		catch (Exception e){
			return 0;
		}
	}
	public boolean equals(Dossier o){
		try {
			return myCollator.equals(o.getEtudiant().getIdApoflux());
		}
		catch (Exception e){
			return false;
		}
	}
	private void writeObject(ObjectOutputStream out) throws IOException {
	}
	private void readObject(ObjectInputStream in) throws IOException {
	}
}
